package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/go-sql-driver/mysql" // mysql 注册了 init()
	"github.com/huandu/go-sqlbuilder"
)

var db *sql.DB

func init() {
	// mysql
	var err error
	dsn := "root:123456@tcp(127.0.0.1:3306)/test"
	db, err = sql.Open("mysql", dsn) // Open mysql
	if err != nil {
		log.Fatal(err)
	}
	db.SetConnMaxIdleTime(0) // 空闲连接的最大可复用时间
	db.SetConnMaxLifetime(0) // 连接的最大可复用时间
	db.SetMaxIdleConns(10)   // 设置空闲连接池中连接的最大数量
	db.SetMaxOpenConns(100)  // 设置打开数据库连接的最大数量
	// fmt.Println(db)
	// err = db.Ping() // 测试连接
	// if err != nil {
	// 	log.Fatal(err)
	// }
	// fmt.Println("连接成功")
}

type emp struct {
	birthday, firstname, lastname, hiredate string
	empno, gender                           int
}

func main() {

	builder := sqlbuilder.
		Select("emp_no", "first_name", "last_name").
		From("employees")
	query, args := builder.
		Where(
			builder.In("emp_no", 10003, 10010, 10015),
		).
		Build()
	fmt.Println(query, args)

	stmt, err := db.Prepare(query)
	if err != nil {
		log.Fatal(err)
	}
	rows, err := stmt.Query(args...)
	if err != nil {
		log.Fatal(err, "%%%%")
	}

	for rows.Next() {
		var e emp
		rows.Scan(&e.empno, &e.firstname, &e.lastname)
		if err != nil {
			continue
		}
		fmt.Println(e)
	}

}
